package interview;

/**
 * @author distantstar
 * @version 1.0
 * @date 2021
 * @description interview
 * @since JDK1.8
 *
 * 假设把某股票的价格按照时间先后顺序存储在数组中，请问买卖该股票  一次  可能获得的最大利润是多少？
 */
public class MaxProfit {
    class Solution {
        /*
            在设置最小价格minPrice，最小值初值为prices[0]，遍历数组：
                如果prices[i]大于min，则去更新一下利润profit
                否则说明当前的prices[i]比minPrice还小，则更新minPrice
        */
        public int maxProfit(int[] prices) {
            if (prices == null || prices.length <= 1) {
                return 0;
            }

            int minPrice = prices[0];
            int profit = 0;
            for (int i = 1; i < prices.length; i++) {
                if (prices[i] > minPrice) {
                    profit = Math.max(profit, prices[i] - minPrice);
                } else {
                    minPrice = prices[i];
                }
            }

            return profit;
        }
    }
}
